In a typical computing system, text is often the preferred method for communicating to a user. The display of text by computer display devices requires the text definition to be in a rasterised form in order to allow the pixel based displays of such computing systems to be able to reproduce the text. In the past, the text characters to be displayed would be stored on a computer device in a rasterised form in a representation known as a “bitmap font”. The “bitmap font” provides the raster definition for each character for the required display sizes and the pixel elements for each raster definition can easily be copied to the memory of a pixel display buffer corresponding to the display device. In order to support multiple display sizes, scalable font definitions for the characters are used and the rasterisation is performed at the time of usage at the desired display size. Font definitions may also be considered as graphical objects.
One method of rasterisation often employed is super-sampling. Super-sampling is the process of using multiple sampling positions to determine the intensity value of each pixel. By utilising multiple samples per pixel, then multiple intensity values can be derived for each pixel location. While such a method is effective in minimising the artefacts known as aliasing, it is expensive in terms of memory usage and the method is slow with increasing sampling rates (requiring more multiplication steps). Typically, a high quality AA rasterisation utilises multiplication factors of at least eight in the horizontal and vertical directions, also known as 8×8AA.
When utilising a renderer which is based on super-sampling, the coverage of a pixel is calculated in order to produce a value corresponding to the average intensity of the pixel. This intensity value often is related to the coverage area of the pixel with the object being rendered. Suppose a glyph to be rendered, such as the glyph 201 shown in FIG. 1 is defined as a vector definition. To render the glyph 201, the vector definition thereof is scaled and placed relative to a pixel grid 202 as shown in FIG. 2. The glyph 201 is scaled to produce a scaled glyph definition 204, placed relative to the pixel grid 202, and has the area 203 inside the glyph 204 that corresponds to the areas inside the shape to be rasterised. As the edges of the glyph 204 do not lie on the pixel boundaries, then some pixels of the display pixel grid 202 are only partially covered by the glyph object, and typically the rendering of the pixel edges would utilise anti-aliased rendering (as described above in super-sampling).
Shown in FIGS. 3A to 3D are the corresponding rendering of features of the glyph 204, particularly corresponding to a corner with an acute or obtuse angle 206 (which will be referred to as a non-reflex angle), shown as the corner 301 in FIG. 3A, and a corner with a reflex angle 205, shown as the corner 302 in FIG. 3B. A normal rendering using super-sampling (or any rendering based on area coverage) produces the corresponding pixel values shown in FIG. 3C and FIG. 3D, whereby the pixel 303 corresponding to the 90-degree corner 301 is of a lighter shade than its neighbouring pixels 305 and 306, and the pixel 304 corresponding to the 270-degree corner 302 is a darker shade than its neighbouring pixels 307 and 308. When the corner pixels are rendered with a different intensity value to the neighbouring pixels, the user perceives a non-sharp corner when compared to a rendering which utilises the same pixel value as one its neighbouring pixel values.
It is desirable to produce a rendering which improves the rendering of text to increase the sharpness of corners of glyphs by creating a more suitable intensity value for such corner pixels.